<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>列表的排序</title>
    <script src="../js/vue.js"></script>
    <script src="../js/阻止vue在启动时生成生产提示.js"></script>
</head>

<body>
    <div id="root">
        <h2>人员列表</h2>
        <input type="text" placeholder="请输入名字" v-model="keyWord">
        <button @click="sortType = 2">年龄升序</button>
        <button @click="sortType = 1">年龄降序</button>
        <button @click="sortType = 0">原顺序</button>
        <ul>
            <li v-for="(p,index) of filPersons " :key="index">
                {{p.name}}-{{p.age}}-{{p.sex}}
            </li>
        </ul>
    </div>

</body>
<script>
    const vm = new Vue({
        el: '#root',
        data: {
            keyWord: '',
            sortType: 0, //0代表原顺序，1降序，2升序
            persons: [{
                    id: '001',
                    name: '马冬梅',
                    age: 30,
                    sex: '女'
                },
                {
                    id: '002',
                    name: '周冬雨',
                    age: 31,
                    sex: '女'
                },
                {
                    id: '003',
                    name: '周杰伦',
                    age: 18,
                    sex: '男'
                },
                {
                    id: '004',
                    name: '温兆伦',
                    age: 19,
                    sex: '男'
                }
            ]
        },

        // 用计算属性computed实现
        computed: {
            filPersons() {
                const arr = this.persons.filter((p) => {
                    return p.name.indexOf(this.keyWord) !== -1
                })
                //判断一下是否需要排序
                if (this.sortType) {
                    arr.sort((p1, p2) => {
                        return this.sortType === 1 ? p2.age - p1.age : p1.age - p2.age
                    })
                }
                return arr
            }
        }
    })
</script>

</html>